package com.darthsith.droidathome.core.service;

import java.util.List;

import com.darthsith.droidathome.core.model.Device;
import com.darthsith.droidathome.core.model.User;

/**
 * This service is used for manage user and connected device, for authenticatin and other jobs.
 * 
 * @author andrea
 *
 */
public interface AuthService {
	
	/**
	 * Add Device
	 * 
	 * @param device
	 */
	void addDevice(Device device);
	
	/**
	 * List all device
	 * 
	 * @return
	 */
	List<Device> listDevice();
	
	/**
	 * Remove Device
	 * 
	 * @param device
	 */
	void removeDevice(Device device);
	
	/**
	 * Get Device
	 * 
	 * @param macAddress
	 * @return
	 */
	Device getDevice(String macAddress);
	/**
	 * Add User
	 * 
	 * @param user
	 */
	void addUser(User user);

	/**
	 * List all User
	 * 
	 * @return
	 */
	List<User> listUser();
	
	/**
	 * Remove User
	 * 
	 * @param user
	 */
	void removeUser(User user);
	
	/**
	 * Get User
	 * 
	 * @param username
	 * @return
	 */
	User getUser(String username);
}
